﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using log4net;
using GS1.Utilitario;
using SegIdenPC.Helper;
using System.Threading;

namespace SegIdenPC.Formularios
{
    public partial class frmSincronizar : Form
    {
        #region --- Variable Privadas y Constantes ---
        private static readonly ILog log = LogManager.GetLogger(typeof(frmSincronizar));

        private const string MENSAJE_CARGA = "CARGANDO MOVIL";
        private const string MENSAJE_DESCARGA = "DESCARGANDO MOVIL";

        private const string MENSAJE_CONFIRMACION_CARGA = "Información cargada correctamente";
        private const string MENSAJE_CONFIRMACION_DESCARGA = "Información procesada correctamente";

        private static string mensajeConfirmacionAmostrar = string.Empty;

        //private Thread hiloDeSincronizacion = null;
        #endregion

        #region --- Constructor ---
        public frmSincronizar()
        {
            InitializeComponent();
        }
        #endregion

        #region --- Eventos Formulario ---
        private void frmSincronizar_Load(object sender, EventArgs e)
        {
            this.Show();
            this.Refresh();

            ejecutarSincronizacion();
        }
        #endregion

        #region --- Metodos Propios ---
        private void ejecutarSincronizacion()
        {
            using (TransferenciaHelper transferencia = new TransferenciaHelper())
            {
                transferencia.avanceSincronizar += new TransferenciaHelper.AvanceSincronizarHandler(transferencia_avanceSincronizar);
                transferencia.procesoSincronizar += new TransferenciaHelper.ProcesoSincronizarHandler(transferencia_procesoSincronizar);
              
                if (transferencia.sincronizar())
                {
                    Libreria.ShowMessageboxInfo(mensajeConfirmacionAmostrar, this.Text);
                    this.Close();
                }
            }
        }

        private void transferencia_procesoSincronizar(TransferenciaHelper.ProcesoSincronizacion proceso)
        {
            switch (proceso)
            {
                case TransferenciaHelper.ProcesoSincronizacion.CARGA:
                    this.lblProceso.Text = MENSAJE_CARGA;
                    mensajeConfirmacionAmostrar = MENSAJE_CONFIRMACION_CARGA;
                    break;
                case TransferenciaHelper.ProcesoSincronizacion.DESCARGA:
                    this.lblProceso.Text = MENSAJE_DESCARGA;
                    mensajeConfirmacionAmostrar = MENSAJE_CONFIRMACION_DESCARGA;
                    break;
            }
            this.lblProceso.Refresh();
        }

        private void transferencia_avanceSincronizar(string mensaje, int porcentaje)
        {
            this.lblMensaje.Text = mensaje; this.lblMensaje.Refresh();
            this.pgbAvance.Value = porcentaje; this.pgbAvance.Refresh();
        }
        #endregion
    }
}
